//------------------------------------------------------------------------------
// The contents of this file are subject to the nopCommerce Public License Version 1.0 ("License"); you may not use this file except in compliance with the License.
// You may obtain a copy of the License at  http://www.nopCommerce.com/License.aspx. 
// 
// Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. 
// See the License for the specific language governing rights and limitations under the License.
// 
// The Original Code is nopCommerce.
// The Initial Developer of the Original Code is NopSolutions.
// All Rights Reserved.
// 
// Contributor(s): _______. 
//------------------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.UI;
using System.Web.UI.WebControls;
using NopSolutions.NopCommerce.BusinessLogic.Model;

namespace NopSolutions.NopCommerce.Web.Administration.Modules
{
    public partial class SettingsControl : BaseNopAdministrationUserControl
    {
        string _settingName = string.Empty;
        string _settingValue = string.Empty;

        protected void Page_Load(object sender, EventArgs e) {
            if (!Page.IsPostBack) {
                BindGrid();
            }
        }

        void BindGrid() {
            var settingDictionary = this.SettingManager.GetAllSettings();

            List<Setting> settings = new List<Setting>();
            foreach (KeyValuePair<string, Setting> kvp in settingDictionary) {
                if (kvp.Value != null)
                    settings.Add(kvp.Value);
            }

            settings = settings.Where(s =>
                (s.Name.ToLower().Contains(_settingName.Trim().ToLower()) && !string.IsNullOrWhiteSpace(_settingName))
                || (s.Value.ToLower().Contains(_settingValue.Trim().ToLower()) && !string.IsNullOrWhiteSpace(_settingValue))).ToList();

            if (settings != null && settings.Count > 0) {
                gvSettings.Visible = true;
                gvSettings.DataSource = settings;
                gvSettings.DataBind();
            } else {
                gvSettings.Visible = false;
            }
        }

        protected void gvSettings_PageIndexChanging(object sender, GridViewPageEventArgs e) {
            gvSettings.PageIndex = e.NewPageIndex;
            BindGrid();
        }

        protected void OnSearchButtonClick(object sender, EventArgs e) {
            if (!string.IsNullOrWhiteSpace(txtSettingName.Text)) {
                _settingName = txtSettingName.Text.Trim();
            }

            if (!string.IsNullOrWhiteSpace(txtSettingValue.Text)) {
                _settingValue = txtSettingValue.Text.Trim();
            }

            BindGrid();
        }
    }
}